package model;

import java.util.Observable;

public class Cronometro extends Observable implements Runnable {
    
    private static Cronometro instanciaCronometro;
    private boolean cronometroActivo;
    Thread hilo;
    private String tiempo;
    public int minutos,segundos, horas;
    
   
    public static Cronometro getInstanciaCronometro() {
        if (instanciaCronometro == null){
            instanciaCronometro = new Cronometro();
        }
        return instanciaCronometro; 
    }  
    
    private Cronometro(){
        hilo = new Thread(this);
    }
    
    public void run(){
        while (cronometroActivo){
            try {
                Thread.sleep(1000);
                segundos ++;
                
                if(segundos == 60) {
                    segundos = 0;
                    minutos++;
                }
                
                if(minutos == 60) {
                    minutos = 0;
                    horas++;
                }                
                if(horas < 10){
                    tiempo = "0" + horas + ":";
                }else{
                    tiempo = horas + ":";
                }
                if(minutos < 10){
                    tiempo += "0" + minutos + ":";
                }else{
                    tiempo += minutos + ":";
                }
                if(segundos < 10){
                    tiempo += "0" + segundos;
                }else{
                    tiempo += segundos;
                }
                                
                setChanged();
                notifyObservers("1");
                
            } catch (InterruptedException e) {
                    System.out.println("Fallo cronometro");
                    e.printStackTrace();
            }
    	}	
    }
    
    
    public String getTiempo(){
    	return tiempo;
    }
   
    // Iniciar el cronometro poniendo cronometroActivo
    //en verdadero para que entre en el while
    public void iniciarCronometro(){
        cronometroActivo = true;
        tiempo = "00:00:00";
        horas = 0;
        minutos = 0;
        segundos = 0;
        hilo.start();             
    }
    
    //Esto es para parar el cronometro
    public void pararCronometro(){
        cronometroActivo = false;
    }
}


